As is well known, advertising forms an important part of programming that is broadcast or otherwise delivered to viewers. The revenues generated from advertisers subsidize and in some cases pay entirely for the programming. Even in subscriber-based television systems such as cable and satellite television systems, the revenues from advertisements subsidize the cost of the programming, and were it not for advertisements, the monthly subscription rates in such systems could be many times higher than at present. In the past, analog video ads were commonly inserted into analog satellite video feeds by the local cable operators. Most often, analog ads were stored on tape and switched into the network feed by analog video switches, with the switching process being triggered by a cue tone sequence on the associated audio feeds delivered together with the video feed and received by a satellite receiver. As more cable systems have been converted to deliver digitally compressed video to the customer's home, cable operators have developed a variety of new technologies for inserting digital advertising content into the digital bitstream.
In the digital realm, video programs are typically encoded into MPEG video streams that are then multiplexed into a Multi-Program Transport Stream (MPTS). The process of concatenating digitally encoded video segments such as a program and an advertisement is referred to as splicing. Splicing is generally accomplished by defining “in-points” and “out-points” for each video stream, which are indicative of appropriate stream entry and exit points, respectively. The Society of Cable Television Engineers Standard 35 (SCTE 35) is one example of a cable protocol that supports Digital Program Insertion (DPI) in MPEG-2 streams by defining digital cue tone signals that are inserted in the digital video stream at the headend during the network encoding process. These cue tone messages exist as specific data packets with specific header information. Common cue tone signals include a pre-roll signal, which is sent approximately 5 to 8 seconds before splice time to indicate an upcoming available advertisement time slot (frequently referred to as an “avail”); a start signal, which marks the beginning of the avail and is used to trigger switching from the original video stream into the ad stream; and a stop signal, which occurs at the end of the avail for switching back to the original video stream.
In the context of advertising, splicing is sometimes used to deliver targeted ads to viewers. Traditional broadcast television systems broadcast the same television signal to each person viewing a particular station. Thus, each person viewing a particular channel will necessarily view the same programming content as well as the same advertisements embedded in the programming content. However, with modern digital television systems more personalized television service is possible. For instance, a group of subscriber households can be selectively addressed through a cable node serving that group. Similarly, individual subscriber households can be selectively addressed though their set top terminals. In other words, the service provider can send different data to different subscribers or groups of subscribers. As result, different viewers receiving the same program may be presented with different advertisements. This can be accomplished at the time the advertisement is to be presented by forcing the viewer's terminal (e.g., a set top terminal) to transition from one service to another service. In one example, the transition may be accomplished by forcing the viewer terminal to tune from one physical or logical channel on which a program is being received to another physical or logical channel on which an advertisement targeted to that viewer is being received. Once the advertisement has been received the viewer terminal will transition back to the service that is delivering the original program. Alternatively, instead of using different services, both the program and the advertisement may be sent in a common transport packet stream on a single channel. The common transport packet stream will include the individual program transport streams for both the program and the advertisement.
Concurrent with the increase in growth of digital cable systems has been the increasing popularity in the use of Digital Video Recorders (DVRs) by viewers. DVRs store program material onto a storage medium that is easily accessible and reusable, and the recording does not degrade over time as with video tapes. DVRs may be implemented as stand alone devices that are interconnected to other devices. Alternatively, they may be implemented as a subsystem of a set top terminal, media center or television. In this case the DVR can control the channel tuned on the television, provide an interactive electronic program guide, and record programming on a manual or timer controlled basis. Additionally, the DVR can buffer incoming audiovisual programming to enable a viewer to pause or replay a portion of a live television program, so long as the pause or replay does not exceed the capacity of the buffer. In addition to the standard play mode (forward direction, standard speed), DVRs are capable of displaying video in several “trick play” modes. Trick play modes include fast forward play, slow forward play, fast reverse play, slow reverse play, and pause.
When programming content that includes a splice point is recorded and subsequently rendered by a DVR, the DVR will need to identify the splice point defining the transition point between the original program and the advertisement, or, more generally, between any two segments of content that have been spliced together. When the splice point is reached the decoder in the DVR will need to stop rendering the first content segment and then begin rendering the second content segment. This can be problematic in some cases, particularly when the user renders the program using trick play modes, since in many trick play modes of operation (e.g., fast-forward) not all the frames of a program are decoded and presented for viewing, and hence not all the packets associated with the program will be decoded. Moreover, since in other trick play modes of operation (e.g., rewind at the normal presentation rate) the frames of a program are not decoded and presented for viewing in their normal sequential order, the packets associated with those frames are not decoded in their normal sequential order. In either case the data packets identifying the splice points may not be decoded at the appropriate time, thus preventing the DVR from properly transitioning between the different content segments.